/**
 * 版权所有(C)，上海勾芒信息科技，2017，所有权利保留。
 * 
 * 项目名：	cards-web
 * 文件名：	WxAppPayServiceImpl.java
 * 模块说明：	
 * 修改历史：
 * 2017年6月16日 - Debenson - 创建。
 */
package cn.binarywang.wx.miniapp.api.impl;

import com.alex.wechat.mp.config.WxConsts;
import com.github.binarywang.wxpay.config.WxPayConfig;
import com.github.binarywang.wxpay.service.impl.WxPayServiceImpl;

import cn.binarywang.wx.miniapp.api.WxMaConfigEx;
import cn.binarywang.wx.miniapp.api.WxMaServiceEx;

/**
 * 小程序微信支付服务。
 * 
 * @author Debenson
 * @since 0.1
 */
public class WxAppPayServiceImpl extends WxPayServiceImpl {

  private final WxMaServiceEx wxAppService;

  public WxAppPayServiceImpl(WxMaServiceEx wxAppService) {
    super();
    this.wxAppService = wxAppService;
    setConfig(new WxPayConfigDelegate());
  }

  /**
   * @author Debenson
   * @since 0.1
   */
  public class WxPayConfigDelegate extends WxPayConfig {

    private WxMaConfigEx getConfig() {
      return (WxMaConfigEx) wxAppService.getWxMaConfig();
    }

    /**
     * 商户号
     */
    @Override
    public String getMchId() {
      return getConfig().getPayMchId();
    }

    /**
     * 商户密钥
     */
    @Override
    public String getMchKey() {
      return getConfig().getPayMchKey();
    }

    /**
     * 公众号appid
     */
    @Override
    public String getAppId() {
      return getConfig().getAppid();
    }

    /**
     * 服务商模式下的子商户公众账号ID
     */
    @Override
    public String getSubAppId() {
      return null;
    }

    /**
     * 服务商模式下的子商户号
     */
    @Override
    public String getSubMchId() {
      return null;
    }

    /**
     * 微信支付异步回掉地址，通知url必须为直接可访问的url，不能携带参数。
     */
    @Override
    public String getNotifyUrl() {
      return getConfig().getPayNotifyUrl();
    }

    /**
     * 交易类型
     * 
     * <pre>
     * JSAPI--公众号支付
     * NATIVE--原生扫码支付
     * APP--app支付
     * </pre>
     */
    @Override
    public String getTradeType() {
      return WxConsts.TRADE_TYPE_JSAPI;
    }

  }

}
